901f71fbb50370784aedcf857e939100f0eb8584,Java_CCN/com/parc/ccn/data/security/KeyLocator.java,KeyLocator,decode,#XMLEventReader#,131

Before Change



	public void decode(XMLEventReader reader) throws XMLStreamException {
		XMLHelper.readStartElement(reader, KEY_LOCATOR_ELEMENT);
		XMLHelper.readStartElement(reader, KEY_LOCATOR_TYPE_ELEMENT);
		String strType = reader.getElementText();
		_type = nameToType(strType);
		if (null == _type) {
			throw new XMLStreamException("Cannot parse key type: " + strType);
		}
		XMLHelper.readEndElement(reader);
		
		if (type() == KeyLocatorType.KEY) {
			XMLHelper.readStartElement(reader, PUBLISHER_KEY_ELEMENT);
			String strKey = reader.getElementText();
			try {
				byte [] encodedKey = XMLHelper.decodeElement(strKey);
				// This is a DER-encoded SubjectPublicKeyInfo.
				_key = decodeKey(encodedKey);
			} catch (IOException e) {
				Library.logger().warning("Cannot parse stored key: " + strKey + " error: " + e.getMessage());
				throw new XMLStreamException("Cannot parse key: " + strKey, e);
			} catch (InvalidKeySpecException e) {
				Library.logger().warning("Cannot turn stored key " + strKey + " into key of appropriate type.");
				throw new XMLStreamException("Cannot turn stored key " + strKey + " into key of appropriate type.");
			}
			if (null == _key) {
				throw new XMLStreamException("Cannot parse key: " + strKey);
			}
			XMLHelper.readEndElement(reader);
		} else if (type() == KeyLocatorType.CERTIFICATE) {
			XMLHelper.readStartElement(reader, PUBLISHER_CERTIFICATE_ELEMENT);
			String strCert = reader.getElementText();
			try {
				byte [] encodedCert = XMLHelper.decodeElement(strCert);

After Change


	public void decode(XMLEventReader reader) throws XMLStreamException {
		XMLHelper.readStartElement(reader, KEY_LOCATOR_ELEMENT);

		String strType = XMLHelper.readElementText(reader, KEY_LOCATOR_TYPE_ELEMENT);
		_type = nameToType(strType);
		if (null == _type) {
			throw new XMLStreamException("Cannot parse key type: " + strType);
		}
		
		if (type() == KeyLocatorType.KEY) {
			String strKey = XMLHelper.readElementText(reader, PUBLISHER_KEY_ELEMENT);
			try {
				byte [] encodedKey = XMLHelper.decodeElement(strKey);
				// This is a DER-encoded SubjectPublicKeyInfo.
				_key = decodeKey(encodedKey);
			} catch (IOException e) {
				Library.logger().warning("Cannot parse stored key: " + strKey + " error: " + e.getMessage());
				throw new XMLStreamException("Cannot parse key: " + strKey, e);
			} catch (InvalidKeySpecException e) {
				Library.logger().warning("Cannot turn stored key " + strKey + " into key of appropriate type.");
				throw new XMLStreamException("Cannot turn stored key " + strKey + " into key of appropriate type.");
			}
			if (null == _key) {
				throw new XMLStreamException("Cannot parse key: " + strKey);
			}
		} else if (type() == KeyLocatorType.CERTIFICATE) {
			String strCert = XMLHelper.readElementText(reader, PUBLISHER_CERTIFICATE_ELEMENT);
			try {
				byte [] encodedCert = XMLHelper.decodeElement(strCert);
				CertificateFactory factory = CertificateFactory.getInstance("X.509");